Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
185 lines
5.3 KiB
C++
185 lines
5.3 KiB
C++
// 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<Item::CItemContainer*>(0));
|
|
}
|
|
|
|
CItemInfoSheet::CItemInfoSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
|
|
: CPropertySheet(pszCaption, pParentWnd, iSelectPage)
|
|
{
|
|
std::fill_n(m_lpItemContainer, int(MAX_ITEM_INFO), reinterpret_cast<Item::CItemContainer*>(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();
|
|
}
|