// ItemInfoSheet.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "resource.h" #include "GameLogAnalyzer.h" #include "ItemInfoSheet.h" #include "LogItemContainer.h" // CItemInfoSheet IMPLEMENT_DYNAMIC(CItemInfoSheet, CPropertySheet) CItemInfoSheet::CItemInfoSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) : CPropertySheet(nIDCaption, pParentWnd, iSelectPage) { std::fill_n(m_lpItemContainer, int(MAX_ITEM_INFO), reinterpret_cast(0)); } CItemInfoSheet::CItemInfoSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) : CPropertySheet(pszCaption, pParentWnd, iSelectPage) { std::fill_n(m_lpItemContainer, int(MAX_ITEM_INFO), reinterpret_cast(0)); } CItemInfoSheet::~CItemInfoSheet() { for(int nCount = 0; nCount < MAX_ITEM_INFO; ++nCount) { if(NULL != m_lpItemContainer[nCount]) { delete m_lpItemContainer[nCount]; m_lpItemContainer[nCount] = NULL; } } } BEGIN_MESSAGE_MAP(CItemInfoSheet, CPropertySheet) ON_WM_CLOSE() END_MESSAGE_MAP() bool CItemInfoSheet::Initialize(char* lpCharacterInfo, unsigned short usUpdateInfo[DBUpdateData::MAX_UPDATE_DB], char* szDepositData, unsigned short usDepositSize, unsigned long dwDepositMoney) { UINT nIDS[MAX_ITEM_INFO] = { IDS_EQUIP_INFO, IDS_INVEN_INFO, IDS_EXCHANGE_INFO, IDS_TEMPINVEN_INFO, IDS_EXTRA_INFO }; for(int nCount = 0; nCount < MAX_ITEM_INFO; ++nCount) { int nPos = DBUpdateData::MAX_UPDATE_DB; CEdit& edit = m_ItemInfo[nCount].GetEditBox(); CListBox& listbox = m_ItemInfo[nCount].GetListBox(); Item::CItemContainer* lpItemContainer = NULL; int nListSize = 0; int nArrayXSize = 0, nArrayYSize = 0, nArrayTabNum = 0; switch(nCount) { case EQUIP_INFO: nPos = DBUpdateData::ITEM_EQUIP_UPDATE; nListSize = Item::EquipmentPos::MAX_EQUPMENT_POS; break; case INVEN_INFO: nPos = DBUpdateData::ITEM_INVEN_UPDATE; nArrayXSize = 6; nArrayYSize = 6; nArrayTabNum = 4; break; case EXCHANGE_INFO: nPos = DBUpdateData::ITEM_EXCHANGE_UPDATE; nArrayXSize = 8; nArrayYSize = 4; nArrayTabNum = 1; break; case TEMPINVEN_INFO: nPos = DBUpdateData::ITEM_TEMPINVEN_UPDATE; nArrayXSize = 4; nArrayYSize = 6; nArrayTabNum = 1; break; case EXTRA_INFO: nPos = DBUpdateData::ITEM_EXTRA_UPDATE; nListSize = Item::ExtraSpacePos::MAX_EXTRA_SPACE_NUM; break; default: continue; } char* szSerializePtr = lpCharacterInfo + std::accumulate(&usUpdateInfo[0], &usUpdateInfo[nPos], 0); unsigned long dwSerializeSize = usUpdateInfo[nPos]; switch(nCount) { case EQUIP_INFO: case EXTRA_INFO: { Item::CLogListContainer* lpLogListContainer = new Item::CLogListContainer(listbox, edit); if(NULL != lpLogListContainer) { if(lpLogListContainer->Initialize(0, Item::EquipmentPos::MAX_EQUPMENT_POS)) { lpItemContainer = lpLogListContainer; } } } break; case EXCHANGE_INFO: case INVEN_INFO: { Item::CLogArrayContainer* lpLogArrayContainer = new Item::CLogArrayContainer(listbox, edit); if(NULL != lpLogArrayContainer) { if(lpLogArrayContainer->Initialize(0, nArrayXSize, nArrayYSize, nArrayTabNum)) { lpItemContainer = lpLogArrayContainer; } } } break; case TEMPINVEN_INFO: { Item::CLogListContainer* lpLogListContainer = new Item::CLogListContainer(listbox, edit); if(NULL != lpLogListContainer) { if(lpLogListContainer->Initialize(0, Item::MAX_TEMP_INVEN_ITEM_NUM)) { lpItemContainer = lpLogListContainer; } } } break; } if(NULL != lpItemContainer) { lpItemContainer->SerializeIn(szSerializePtr, dwSerializeSize); } m_lpItemContainer[nCount] = lpItemContainer; m_ItemInfo[nCount].Initialize(lpItemContainer); m_ItemInfo[nCount].Construct(IDD_ITEMINFO_PAGE, nIDS[nCount]); AddPage(&m_ItemInfo[nCount]); } Item::CLogArrayContainer* lpLogArrayContainer = new Item::CLogArrayContainer(m_Deposit.GetListBox(), m_Deposit.GetEditBox()); if(NULL != lpLogArrayContainer) { m_lpDeposit = lpLogArrayContainer; lpLogArrayContainer->Initialize(0, 8, 12, 4); lpLogArrayContainer->SerializeIn(szDepositData, usDepositSize); m_Deposit.Initialize(lpLogArrayContainer, dwDepositMoney); m_Deposit.Construct(IDD_ITEMINFO_PAGE, IDS_DEPOSIT_INFO); AddPage(&m_Deposit); } return true; } BOOL CItemInfoSheet::OnInitDialog() { BOOL bResult = CPropertySheet::OnInitDialog(); // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. return bResult; } void CItemInfoSheet::OnClose() { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. CPropertySheet::OnClose(); }