📄 mygrid.cpp
字号:
}
}
}
break ;
case ICON_TYPE_TRADE:
{
CItem *pItem = NULL ;
if ( m_GriPar.m_btOwnerID == DLG_TRADEMPC )
{
pItem = g_objHero.GetHeroTradeItemByIndex( m_GriPar.m_IconIndex[index - 1] ) ;
}
else if ( m_GriPar.m_btOwnerID == DLG_TRADENPC )
{
pItem = g_objHero.GetPlayerTradeItemByIndex( m_GriPar.m_IconIndex[index - 1] ) ;
}
if ( pItem != NULL )
{
pItem->ShowMiniItem( m_GriPar.m_Point.x + nRowLeft ,
m_GriPar.m_Point.y + nLineLeft ,m_GriPar.m_bScale ) ;
}
}
break ;
default:
break ;
}
}
}
// test if the mouse is out of the client rect
if ( m_GriPar.m_bMouseMove )
MouseMoveTest ( ) ;
}
CPoint CMyGrid::GetLineAndRow(CPoint MousePoint)
{
CPoint LandR ;
for ( int i = 1; i <= m_GriPar.m_btGridLine; i++ )
{
if ( MousePoint.y > i * m_GriPar.m_btGridHeight + (i - 1)*m_GriPar.m_iGridSpacey )
continue ;
else
{
LandR.y = i ;
for ( int j = 1; j <= m_GriPar.m_btGridRow; j++ )
{
if ( MousePoint.x > j * m_GriPar.m_btGridWidth +( j -1)*m_GriPar.m_iGridSpacex)
continue ;
else
LandR.x = j ;
return LandR ;
}
}
}
return LandR ;
}
void CMyGrid::OnLButtonDown(UINT nFlags, CPoint point)
{
if ( !m_GriPar.m_bEnable )
return ;
CPoint LandR ;
LandR = GetLineAndRow ( point ) ;
BOOL IsAvailab = GetGridAble ( LandR ) ;
if ( IsAvailab && m_GriPar.m_bPickEnable )
// Full
{
if ( g_bPickUp )
// Already pick up a icon
{
if ( m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_ITEM ||
m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_SHOP ||
m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_DEPOT ||
m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_QUSE )
{
if (m_GriPar.m_btOwnerID == DLG_MONSTERHATCH && m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_ITEM)
return;
// if (m_GriPar.m_btOwnerID != DLG_NPCBUY)
{
m_GriPar.m_PickUpIconTypeID = m_GriPar.m_IconTypeID[GetGridIndex ( LandR ) - 1] ;
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex[GetGridIndex ( LandR ) - 1] ;
m_GriPar.m_btPickUpIconType = m_GriPar.m_btIconType[GetGridIndex ( LandR )- 1] ;
m_GriPar.m_PickUpIconRealID = m_GriPar.m_IconRealID[GetGridIndex ( LandR )- 1] ;
m_GriPar.m_InsetLandR = LandR ;
GetCursorPos( &m_GriPar.m_PickUpMousePoint ) ;
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_TRADE, m_GriPar.m_btOwnerID) ;
}
}
else
{
m_GriPar.m_InsetLandR = LandR ;
RemoveIcon ( LandR.y, LandR.x ) ;
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_DROP, m_GriPar.m_btOwnerID) ;
}
}
else
// Not pick up a icon
{
if ( m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_ITEM ||
m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_SHOP ||
m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_DEPOT ||
m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_QUSE )
{
if (m_GriPar.m_btOwnerID == DLG_TASKGET)
return;
if (m_GriPar.m_btOwnerID == DLG_MONSTERHATCH && m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_ITEM)
return;
RemoveIcon ( LandR.y, LandR.x ) ;
m_GriPar.m_PickUpIconLandR = LandR ;
m_GriPar.m_PickUpIconTypeID = m_GriPar.m_IconTypeID[GetGridIndex ( LandR ) - 1] ;
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex[GetGridIndex ( LandR ) - 1] ;
m_GriPar.m_btPickUpIconType = m_GriPar.m_btIconType[GetGridIndex ( LandR ) - 1] ;
if ( m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] == ICON_TYPE_QUSE )
{
bool bLoad = false;
for ( int i = 0; i < g_objHero.GetItemAmount(); i++ )
{
CItem* pMyItem = g_objHero.GetItemByIndex( i );
if ( pMyItem && pMyItem->GetTypeID() == m_GriPar.m_PickUpIconTypeID )
{
m_GriPar.m_PickUpIconRealID = pMyItem->GetID() ;
bLoad = true;
break ;
}
}
if (!bLoad)
{
for(int j=0;j<g_objHero.GetItemAmount(PACKAGE_SOUL);j++)
{
CItem* pMyItem = g_objHero.GetItemByIndex( j ,PACKAGE_SOUL);
if ( pMyItem && pMyItem->GetTypeID() == m_GriPar.m_PickUpIconTypeID )
{
m_GriPar.m_PickUpIconRealID = pMyItem->GetID() ;
bLoad = true;
break ;
}
}
}
}
else
{
m_GriPar.m_PickUpIconRealID = m_GriPar.m_IconRealID[GetGridIndex ( LandR )- 1] ;
}
GetCursorPos( &m_GriPar.m_PickUpMousePoint ) ;
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_PICKUP, m_GriPar.m_btOwnerID) ;
}
else
{
LPARAM lParam ;
CPoint MousePnt ;
m_GriPar.m_btPickUpIconType = m_GriPar.m_btIconType [GetGridIndex ( LandR ) - 1] ;
CMyGrid::SetGridAble ( LandR, false ) ;
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_ID, m_GriPar.m_IconTypeID [GetGridIndex ( LandR ) - 1] ) ;
GetCursorPos ( &MousePnt ) ;
lParam = MAKELONG ( MousePnt.x, MousePnt.y ) ;
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_PNT, lParam ) ;
if ( m_GriPar.m_btPickUpIconType == ICON_TYPE_ACTION )
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_PICKUP, DLG_ACT ) ;
else if ( m_GriPar.m_btPickUpIconType == ICON_TYPE_SKILL )
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_PICKUP, DLG_MAGIC ) ;
else if ( m_GriPar.m_btPickUpIconType == ICON_TYPE_XP )
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_PICKUP, DLG_XP ) ;
}
}
}
else if ( !IsAvailab )
// Not Full
{
if ( g_bPickUp )
// Already pick up a icon
{
m_GriPar.m_InsetLandR = LandR ;
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_ICON_DROP, m_GriPar.m_btOwnerID) ;
}
else
// Not pick up a icon
{
}
}
CButton::OnLButtonDown(nFlags, point);
}
void CMyGrid::OnRButtonDown(UINT nFlags, CPoint point)
{
if ( !m_GriPar.m_bEnable )
return ;
CPoint LandR ;
LandR = GetLineAndRow ( point ) ;
GetCursorPos( &m_GriPar.m_PickUpMousePoint ) ;
BOOL IsAvailab = GetGridAble ( LandR ) ;
if (g_bPickUp)
CMyGrid::GetParent()->GetParent()->PostMessage(WM_MY_MESSAGE,ON_ICON_DROP,DLG_ALL);
if ( IsAvailab )
{
// Send message to use icon
int nPosX = m_GriPar.m_Point.x + (m_GriPar.m_btGridWidth + m_GriPar.m_iGridSpacex) * ( LandR.x - 1 ) ;
int nPosY = m_GriPar.m_Point.y + (m_GriPar.m_btGridHeight + m_GriPar.m_iGridSpacey) * ( LandR.y - 1 ) ;
LPARAM Point = MAKELONG( nPosX, nPosY ) ;
if (m_GriPar.m_bScale == false)
Point = MAKELONG( nPosX + 32, nPosY + 32) ;
CMyGrid::GetParent ()->GetParent ()->PostMessage ( WM_MY_MESSAGE, ON_MSGDLG_POINT, Point ) ;
if ( m_GriPar.m_btOwnerID == DLG_MAIN )
{
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex [GetGridIndex ( LandR ) - 1] ;
LPARAM lParam = (GetGridIndex( LandR )-1) | m_GriPar.m_IconTypeID [GetGridIndex (LandR) - 1] <<8 ;
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_QUSE, lParam ) ;
}
else if ( m_GriPar.m_btOwnerID == DLG_STONEGOODS0 )
{
LPARAM lParam = MAKELONG(GetGridIndex(LandR)-1,m_GriPar.m_btOwnerID);
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_USE, lParam ) ;
}
else if ( m_GriPar.m_btOwnerID == DLG_MPCGOODS )
{
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex [GetGridIndex ( LandR ) - 1] ;
LPARAM lParam = MAKELONG(m_GriPar.m_dwPickUpIconIndex,m_GriPar.m_btOwnerID);
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_USE, lParam ) ;
}
else if ( m_GriPar.m_btOwnerID == DLG_NPCBUY )
{
m_GriPar.m_PickUpIconTypeID = m_GriPar.m_IconTypeID [GetGridIndex ( LandR ) - 1] ;
m_GriPar.m_PickUpIconRealID = m_GriPar.m_IconRealID[GetGridIndex ( LandR )- 1] ;
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_BUY, m_GriPar.m_PickUpIconTypeID ) ;
}
else if ( m_GriPar.m_btOwnerID == DLG_MONSTERDEPOT)
{
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex [GetGridIndex ( LandR ) - 1] ;
LPARAM lParam = MAKELONG(m_GriPar.m_dwPickUpIconIndex,m_GriPar.m_btOwnerID);
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_USE, lParam ) ;
}
else if (m_GriPar.m_btOwnerID == DLG_MONSTERHATCH)
{
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex [GetGridIndex ( LandR ) - 1] ;
LPARAM lParam = MAKELONG(m_GriPar.m_dwPickUpIconIndex,m_GriPar.m_btOwnerID);
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_USE, lParam ) ;
}
else if ( m_GriPar.m_btOwnerID == DLG_AUCPACKAGE)
{
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex [GetGridIndex ( LandR ) - 1] ;
LPARAM lParam = MAKELONG(m_GriPar.m_dwPickUpIconIndex,m_GriPar.m_btOwnerID);
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_USE, lParam ) ;
}
else if ( m_GriPar.m_btOwnerID == DLG_DEPOT )
{
m_GriPar.m_dwPickUpIconIndex = m_GriPar.m_IconIndex [GetGridIndex ( LandR ) - 1] ;
LPARAM lParam = MAKELONG(m_GriPar.m_dwPickUpIconIndex,m_GriPar.m_btOwnerID);
CMyGrid::GetParent()->GetParent()->PostMessage ( WM_MY_MESSAGE, ON_ICON_USE, lParam ) ;
}
}
CButton::OnRButtonDown(nFlags, point);
}
BOOL CMyGrid::GetGridAble(CPoint lrPoint)
{
int Index = ( lrPoint.y - 1 ) * m_GriPar.m_btGridRow + lrPoint.x;
if ( Index < 0 || Index > m_GriPar.m_btGridLine * m_GriPar.m_btGridRow )
return false;
else
return m_GriPar.m_bGridAble[Index - 1];
}
int CMyGrid::InsertIcon(int nLine, int nRow, OBJID ItemTypeID, DWORD dwItemIndex, BYTE btItemType, BOOL bAuto)
{
CPoint lrPoint ;
lrPoint.x = nRow ;
lrPoint.y = nLine ;
if ( ! (nLine <= m_GriPar.m_btGridLine && nRow <= m_GriPar.m_btGridRow ) )
return -1 ;
if ( bAuto )
{
if ( !GetGridAble ( lrPoint ) )
// Not full can insert
{
if ( LoadIcon( lrPoint, ItemTypeID, dwItemIndex, btItemType) )
{
m_GriPar.m_nGridAbleNum++ ;
return ( lrPoint.y - 1 ) * m_GriPar.m_btGridRow + lrPoint.x - 1;
}
}
// full, auto insert
else
{
for ( int i = 1; i <= m_GriPar.m_btGridLine; i++ )
for ( int j = 1; j <= m_GriPar.m_btGridRow; j++ )
{
if ( !GetGridAble ( CPoint ( j, i ) ) )
{
if ( LoadIcon ( CPoint ( j, i ), ItemTypeID, dwItemIndex, btItemType ) )
{
m_GriPar.m_nGridAbleNum++ ;
return ( i - 1 ) * m_GriPar.m_btGridRow + j - 1; ;
}
}
}
}
}
else
{
if ( LoadIcon( lrPoint, ItemTypeID, dwItemIndex, btItemType ) )
{
m_GriPar.m_nGridAbleNum++ ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -