⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mygrid.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 3 页
字号:
							}
						}
					}
					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 + -