📄 inventorywnd.cpp
字号:
/******************************************************************************************************************
葛碘疙:
累己磊:
累己老:
[老磊][荐沥磊] : 荐沥 郴侩
*******************************************************************************************************************/
#include "StdAfx.h"
/******************************************************************************************************************
CInventoryWnd Class
*******************************************************************************************************************/
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::CInventoryWnd()
累己磊 :
累己老 :
格利 :
免仿 :
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
CInventoryWnd::CInventoryWnd()
{
Init();
}
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::~CInventoryWnd()
累己磊 :
累己老 :
格利 :
免仿 :
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
CInventoryWnd::~CInventoryWnd()
{
Destroy();
}
VOID CInventoryWnd::Init()
{
INT nCnt;
CGameWnd::Init();
m_nStartLineNum = 0;
ZeroMemory(m_rcInvenCell, sizeof(RECT) *_INVEN_MAX_CELL);
ZeroMemory(m_rcBeltCell, sizeof(RECT) *_BELT_MAX_CELL );
ZeroMemory(m_stInventoryItem, sizeof(ITEMSET)*_MAX_INVEN_ITEM);
ZeroMemory(m_stBeltItem, sizeof(ITEMSET)*_MAX_BELT_ITEM );
m_xInvenScrlBar.Init();
for ( nCnt = 0; nCnt < _MAX_INVEN_BTN; nCnt++ )
{
m_xInventoryBtn[nCnt].Init();
}
}
VOID CInventoryWnd::Destroy()
{
INT nCnt;
CGameWnd::Destroy();
for ( nCnt = 0; nCnt < _MAX_INVEN_BTN; nCnt++ )
{
m_xInventoryBtn[nCnt].Destroy();
}
Init();
}
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::CreateInventoryWnd()
累己磊 :
累己老 :
格利 :
涝仿 : INT nID
CWHWilImageData* pxWndImage
INT nFrameImgIdx
INT nStartX
INT nStartY
INT nWidth
INT nHeight
BOOL bCanMove
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CInventoryWnd::CreateInventoryWnd(INT nID, CWHWilImageData* pxWndImage, INT nFrameImgIdx, INT nStartX, INT nStartY, INT nWidth, INT nHeight, BOOL bCanMove)
{
// 扩档快 积己.
CreateGameWnd(nID, pxWndImage, nFrameImgIdx, bCanMove, nStartX, nStartY, nWidth, nHeight);
// 滚瓢积己.
m_xInventoryBtn[_BTN_ID_INVENCLOSE ].CreateGameBtn(pxWndImage, 280, 281, nStartX+255, nStartY+291);
// m_xInventoryBtn[_BTN_ID_INVENSCRLUP ].CreateGameBtn(pxWndImage, 74, 75, nStartX+247, nStartY+ 20);
// m_xInventoryBtn[_BTN_ID_INVENSCRLDOWN].CreateGameBtn(pxWndImage, 74, 75, nStartX+247, nStartY+167);
m_xInvenScrlBar.CreateScrlBar(pxWndImage, 270, _INVEN_MAX_CELL_YCNT, 10, 218, 10);
// 牢亥配府 伎康开狼 Set.
for ( INT nYCnt = 0; nYCnt < _INVEN_CELL_YCNT; nYCnt++ )
{
for ( INT nXCnt = 0; nXCnt < _INVEN_CELL_XCNT; nXCnt++ )
{
SetRect(&m_rcInvenCell[nXCnt+nYCnt*_INVEN_CELL_XCNT],
_INVEN_CELL_XSTART+(nXCnt*_INVENTORY_CELL_WIDTH),
_INVEN_CELL_YSTART+(nYCnt*_INVENTORY_CELL_HEIGHT),
_INVEN_CELL_XSTART+(nXCnt*_INVENTORY_CELL_WIDTH) +_INVENTORY_CELL_WIDTH,
_INVEN_CELL_YSTART+(nYCnt*_INVENTORY_CELL_HEIGHT)+_INVENTORY_CELL_HEIGHT);
}
}
// 骇飘 伎康开狼 Set.
for ( INT nCnt = 0; nCnt < _MAX_BELT_ITEM; nCnt++ )
{
SetRect(&m_rcBeltCell[nCnt],
_BELT_CELL_XSTART+(nCnt*_BELT_CELL_XGAP),
_BELT_CELL_YSTART,
_BELT_CELL_XSTART+(nCnt*_BELT_CELL_XGAP)+_INVENTORY_CELL_WIDTH,
_BELT_CELL_YSTART+_INVENTORY_CELL_HEIGHT);
}
}
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::SetInvenBtnInit()
累己磊 :
累己老 :
格利 :
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CInventoryWnd::SetInvenBtnInit()
{
for( INT nCnt = 0; nCnt < _MAX_INVEN_BTN; nCnt++ )
{
m_xInventoryBtn[nCnt].SetBtnState(_BTN_STATE_NORMAL);
}
}
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::ShowInventoryWnd()
累己磊 :
累己老 :
格利 :
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CInventoryWnd::ShowInventoryWnd()
{
INT nCnt;
// 扩档快 官帕弊府扁.
ShowGameWnd();
RECT rcTitle = {m_rcWnd.left+31, m_rcWnd.top+27, m_rcWnd.left+133, m_rcWnd.top+43};
g_xMainWnd.PutsHan(NULL, rcTitle, RGB(200, 200, 255), RGB(0, 0, 0), "[啊规芒]", g_xMainWnd.CreateGameFont("泵辑眉", 10, 0, FW_BOLD));
// 胶农费官.
m_xInvenScrlBar.ShowScrlBar(m_rcWnd.left+254, m_rcWnd.top-165, m_nStartLineNum, 12);
// 牢亥配府 酒捞袍 弊府扁.
for ( nCnt = 0; nCnt < _MAX_INVEN_ITEM; nCnt++ )
{
if ( m_stInventoryItem[nCnt].bSetted )
{
INT nStartX, nStartY;
if ( nCnt >= m_nStartLineNum*_INVEN_CELL_XCNT && nCnt < (m_nStartLineNum+_INVEN_CELL_YCNT)*_INVEN_CELL_XCNT )
{
nStartX = m_rcWnd.left+m_rcInvenCell[nCnt-(m_nStartLineNum*_INVEN_CELL_XCNT)].left;
nStartY = m_rcWnd.top +m_rcInvenCell[nCnt-(m_nStartLineNum*_INVEN_CELL_XCNT)].top;
// m_stInventoryItem[nCnt].xItem.m_stItemInfo.stStdItem.wLooks = 4;
m_stInventoryItem[nCnt].xItem.DrawItem(nStartX, nStartY);
// RECT rc = {nStartX, nStartY, nStartX+_INVENTORY_CELL_WIDTH, nStartY+_INVENTORY_CELL_HEIGHT};
// g_xMainWnd.DrawWithGDI(rc, NULL, RGB(255, 0, 255), 1);
}
}
}
// 骇飘 酒捞袍 弊府扁.
for ( nCnt = 0; nCnt < _MAX_BELT_ITEM; nCnt++ )
{
if ( m_stBeltItem[nCnt].bSetted )
{
INT nStartX, nStartY;
nStartX = m_rcWnd.left+m_rcBeltCell[nCnt].left;
nStartY = m_rcWnd.top+m_rcBeltCell[nCnt].top;
m_stBeltItem[nCnt].xItem.DrawItem(nStartX, nStartY);
}
}
// 牢亥配府 扩档快 滚瓢 弊府扁.
for ( nCnt = 0; nCnt < _MAX_INVEN_BTN; nCnt++ )
{
m_xInventoryBtn[nCnt].ShowGameBtn();
}
// 酒捞袍狼 惑怕摹 焊咯林扁.
ShowInvenItemState();
}
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::ShowInvenItemState()
累己磊 :
累己老 :
格利 :
免仿 : VOID
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
VOID CInventoryWnd::ShowInvenItemState()
{
/* INT nInventoryNum = GetInvenNum(g_xGameProc.m_ptMousePos);
if ( nInventoryNum != -1 )
{
if ( m_stInventoryItem[nInventoryNum].bSetted )
{
m_stInventoryItem[nInventoryNum].xItem.ShowItemStatus(m_rcWnd.left+95, m_rcWnd.top+250);
}
}
*/
INT nInventoryNum = GetInvenNum(g_xGameProc.m_ptMousePos);
if ( nInventoryNum != -1 )
{
if ( m_stInventoryItem[nInventoryNum].bSetted )
{
INT nStartX, nStartY;
if ( nInventoryNum >= m_nStartLineNum*_INVEN_CELL_XCNT && nInventoryNum < (m_nStartLineNum+_INVEN_CELL_YCNT)*_INVEN_CELL_XCNT )
{
nStartX = m_rcWnd.left+m_rcInvenCell[nInventoryNum-(m_nStartLineNum*_INVEN_CELL_XCNT)].left;
nStartY = m_rcWnd.top +m_rcInvenCell[nInventoryNum-(m_nStartLineNum*_INVEN_CELL_XCNT)].top;
m_stInventoryItem[nInventoryNum].xItem.ShowItemStatus(nStartX+15, nStartY+15);
}
}
}
INT nBeltInventoryNum = GetBeltNum(g_xGameProc.m_ptMousePos);
if ( nBeltInventoryNum != -1 )
{
if ( m_stBeltItem[nBeltInventoryNum].bSetted )
{
m_stBeltItem[nBeltInventoryNum].xItem.ShowItemStatus(m_rcWnd.left+95, m_rcWnd.top+250);
}
}
}
/******************************************************************************************************************
酒捞袍 持绊哗扁 包访, 牢亥配府困摹 历厘颇老 技捞宏棺 肺靛.(牢亥配府 棺 骇飘)
*******************************************************************************************************************/
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::CheckItemPos()
累己磊 :
累己老 :
格利 :
涝仿 : CHAR* szName
免仿 : BOOL
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
BOOL CInventoryWnd::CheckItemPos(CHAR* szName)
{
HANDLE hFile;
CHAR szItemFile[MAX_PATH];
INT nCnt1, nCnt2;
ITEMSET stInvenItem[_MAX_INVEN_ITEM]; // 烙矫单捞鸥 肺靛侩函荐.
ITEMSET stBeltItem[_MAX_BELT_ITEM];
ITEMSET stCheckedInvenItem[_MAX_INVEN_ITEM]; // 八荤等 单捞鸥 焊包侩函荐.
ITEMSET stCehckedBeltItem[_MAX_BELT_ITEM];
ZeroMemory(szItemFile, MAX_PATH);
g_xMainWnd.StringPlus(szItemFile, ".\\Data\\", szName, ".itm", "");
hFile = CreateFile(szItemFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
ZeroMemory(stInvenItem, sizeof(ITEMSET)*_MAX_INVEN_ITEM);
ZeroMemory(stCheckedInvenItem, sizeof(ITEMSET)*_MAX_INVEN_ITEM);
ZeroMemory(stBeltItem , sizeof(ITEMSET)*_MAX_BELT_ITEM );
ZeroMemory(stCehckedBeltItem, sizeof(ITEMSET)*_MAX_BELT_ITEM);
if ( hFile != INVALID_HANDLE_VALUE )
{
DWORD dwReadLen;
ReadFile(hFile, &stInvenItem, sizeof(ITEMSET)*_MAX_INVEN_ITEM, &dwReadLen, NULL);
ReadFile(hFile, &stBeltItem , sizeof(ITEMSET)*_MAX_BELT_ITEM , &dwReadLen, NULL);
// 辑滚俊辑 罐篮 牢亥配府单捞鸥客 努扼捞攫飘俊辑 付瘤阜俊 历厘矫挪 骇飘芒单捞鸥甫 厚背窍搁辑 嘎绰 困摹俊 硅沥矫挪促.
for ( nCnt1 = 0; nCnt1 < _MAX_BELT_ITEM; nCnt1++ )
{
if ( stBeltItem[nCnt1].bSetted )
{
for ( nCnt2 = 0; nCnt2 < _MAX_INVEN_ITEM; nCnt2++ )
{
if ( m_stInventoryItem[nCnt2].bSetted )
{
// 鞍篮酒捞袍牢瘤甫 惶酒辰促.
if ( stBeltItem[nCnt1].xItem.m_stItemInfo.nMakeIndex != m_stInventoryItem[nCnt2].xItem.m_stItemInfo.nMakeIndex &&
!strcmp(stBeltItem[nCnt1].xItem.m_stItemInfo.stStdItem.szName, m_stInventoryItem[nCnt2].xItem.m_stItemInfo.stStdItem.szName) &&
(stBeltItem[nCnt1].xItem.m_stItemInfo.nDura == m_stInventoryItem[nCnt2].xItem.m_stItemInfo.nDura ) &&
(stBeltItem[nCnt1].xItem.m_stItemInfo.nDuraMax == m_stInventoryItem[nCnt2].xItem.m_stItemInfo.nDuraMax) )
{
stCehckedBeltItem[nCnt1] = m_stInventoryItem[nCnt2];
ZeroMemory(&stBeltItem[nCnt1], sizeof(ITEMSET));
DeleteInvenItem(nCnt2);
break;
}
}
}
}
}
memcpy(m_stBeltItem, stCehckedBeltItem, sizeof(ITEMSET)*_MAX_BELT_ITEM);
// 牢亥配府.
for ( nCnt1 = 0; nCnt1 < _MAX_INVEN_ITEM; nCnt1++ )
{
if ( stInvenItem[nCnt1].bSetted )
{
for ( nCnt2 = 0; nCnt2 < _MAX_INVEN_ITEM; nCnt2++ )
{
if ( m_stInventoryItem[nCnt2].bSetted )
{
// 鞍篮酒捞袍牢瘤甫 惶酒辰促.
if ( stInvenItem[nCnt1].xItem.m_stItemInfo.nMakeIndex != m_stInventoryItem[nCnt2].xItem.m_stItemInfo.nMakeIndex &&
!strcmp(stInvenItem[nCnt1].xItem.m_stItemInfo.stStdItem.szName, m_stInventoryItem[nCnt2].xItem.m_stItemInfo.stStdItem.szName) &&
(stInvenItem[nCnt1].xItem.m_stItemInfo.nDura == m_stInventoryItem[nCnt2].xItem.m_stItemInfo.nDura ) &&
(stInvenItem[nCnt1].xItem.m_stItemInfo.nDuraMax == m_stInventoryItem[nCnt2].xItem.m_stItemInfo.nDuraMax ) )
{
stCheckedInvenItem[nCnt1] = m_stInventoryItem[nCnt2];
ZeroMemory(&stInvenItem[nCnt1], sizeof(ITEMSET));
DeleteInvenItem(nCnt2);
break;
}
}
}
}
}
for ( nCnt1 = 0; nCnt1 < _MAX_INVEN_ITEM; nCnt1++ )
{
if ( m_stInventoryItem[nCnt1].bSetted )
{
for ( nCnt2 = 0; nCnt2 < _MAX_INVEN_ITEM; nCnt2++ )
{
if ( !stCheckedInvenItem[nCnt2].bSetted )
{
stCheckedInvenItem[nCnt2] = m_stInventoryItem[nCnt1];
break;
}
}
}
}
memcpy(m_stInventoryItem, stCheckedInvenItem, sizeof(ITEMSET)*_MAX_INVEN_ITEM);
CloseHandle(hFile);
return TRUE;
}
return FALSE;
}
/******************************************************************************************************************
窃荐疙 : CInventoryWnd::SaveItemPos()
累己磊 :
累己老 :
格利 :
涝仿 : CHAR* szName
免仿 : BOOL
[老磊][荐沥磊] : 荐沥郴侩
*******************************************************************************************************************/
BOOL CInventoryWnd::SaveItemPos(CHAR* szName)
{
HANDLE hFile;
CHAR szItemFile[MAX_PATH];
ZeroMemory(szItemFile, MAX_PATH);
g_xMainWnd.StringPlus(szItemFile, ".\\Data\\", szName, ".itm", "");
hFile = CreateFile(szItemFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if ( hFile != INVALID_HANDLE_VALUE )
{
DWORD dwWriteLen;
WriteFile(hFile, m_stInventoryItem, sizeof(ITEMSET)*_MAX_INVEN_ITEM, &dwWriteLen, NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -