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

📄 myimage.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MyImage.cpp : implementation file
//

#include "stdafx.h"
#include "MyShell.h"
#include "MyImage.h"
#include "MyShellDlg.h"
#include "Hero.h"
#include "3DGameMap.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyImage

CMyImage::CMyImage()
{
	m_bImageLoad = false ;
	m_bMouseMove = false ;
	m_uFrame = 0 ;
	m_ShowRect.left = 0 ;
	m_ShowRect.top = 0  ;
	m_nImageTypeID = 0 ;
	m_dwImageID = 0 ;
	m_bImgZoom = false ;
	m_nCurMoney = 0 ;
	m_btMilNum = 0 ;
	m_btThoNum = 0 ;
	m_btHunNum = 0 ;
	m_btGoldStar = 0 ;
	m_btSillerStar = 0 ;
	m_btCopperStar = 0 ;
	m_nPosition = 0 ;
}

CMyImage::~CMyImage()
{
}


BEGIN_MESSAGE_MAP(CMyImage, CButton)
	//{{AFX_MSG_MAP(CMyImage)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_RBUTTONDOWN()
	ON_WM_LBUTTONDBLCLK()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyImage message handlers

BOOL CMyImage::Init(int xPos, int yPos, char *ImageID, BYTE btItemType, int nItemPos )
{
	CRect rect ;
	CMyImage::GetWindowRect ( rect ) ;
	m_IntPoint.x = rect.left - xPos ;
	m_IntPoint.y = rect.top - yPos ;
	m_nWidth = rect.Width() ;
	m_nHeight = rect.Height() ;
	m_btItemType = btItemType ;

	switch ( btItemType )
	{
	case NORMAL_IMAGE:
		strcpy ( m_strAni, g_strControlAni ) ;
		m_nItemPos = nItemPos ;
		break ;
	case ITEM_IMAGE:
		m_nItemPos = nItemPos ;
		break ;
	case BG_IMAGE:
		strcpy ( m_strAni, g_strControlAni ) ;
		m_nItemPos = nItemPos ;
		break ;
	case SKILL_IMAGE:
		strcpy( m_strAni, g_strMagicAni ) ;
		break ;
	case NPCITEM_IMAGE:
		m_nItemPos = nItemPos ;
		break ;
	case BOOTHITEM_IMAGE:
		strcpy(m_strAni, "ani/ItemMinIcon.Ani");
		break;
	default:
		break ;
	}	
	
	if ( ImageID != NULL )
	{
		m_bImageLoad = true ;
		CMySize Size = { 0, 0 } ;
		if ( m_btItemType != ITEM_IMAGE && m_btItemType != NPCITEM_IMAGE )
		{
			strcpy ( m_strImageID, ImageID ) ;
			CAni* pSizeAni = g_objGameDataSet.GetDataAni ( ( char * )m_strAni, ImageID, EXIGENCE_IMMEDIATE ) ;
			if ( pSizeAni != NULL )
				Size = pSizeAni->GetSize ( m_uFrame ) ;
			else 
				return false;
			m_ShowRect.right = Size.iWidth ;
			m_ShowRect.bottom = Size.iHeight ;
		}
	}
	return true ;

}

BOOL CMyImage::InsertImage(char *ImageID, DWORD dwImageID, int nImageTypeID, BOOL bImgZoom )
{
	m_bImageLoad = true ;
	m_bImgZoom = bImgZoom ;
	m_dwImageID = dwImageID ;
	m_nImageTypeID = nImageTypeID ;
	CMySize Size = { 0, 0 } ;

	switch ( m_btItemType )
	{
	case ITEM_IMAGE:
		break ;
	case MEDAL_IMAGE:
		break ;
	case FACE_IMAGE:
		break ;
	case NPCITEM_IMAGE:
		break ;
	case EMBLEM_IMAGE:
		break ;
	case PETFACE_IMAGE:
		break;
	case SMALLPETFACE_IMAGE:
		break;
	default:
		{
			strcpy ( m_strImageID, ImageID ) ;
			CAni* pSizeAni = g_objGameDataSet.GetDataAni ( ( char * )m_strAni, ImageID, EXIGENCE_IMMEDIATE ) ;
			if ( pSizeAni != NULL )
				Size = pSizeAni->GetSize ( m_uFrame ) ;
			else
				return false ;
			m_ShowRect.right = Size.iWidth ;
			m_ShowRect.bottom = Size.iHeight ;
		}
		break ;
	}
	return true ;
}

void CMyImage::RemoveImage()
{
	m_bImageLoad = false ;
}

void CMyImage::Show(int x, int y)
{
	m_Point = CPoint ( x + m_IntPoint.x, y + m_IntPoint.y ) ;
	
	if ( m_bMouseMove && ( m_btItemType == ITEM_IMAGE || m_btItemType == NPCITEM_IMAGE || m_btItemType == BOOTHITEM_IMAGE ) )
	{
		CAni* ShowAni = g_objGameDataSet.GetDataAni ( ( char * )g_strControlAni, "Image2", EXIGENCE_IMMEDIATE ) ;
		if ( ShowAni != NULL )
		{
			RECT rect = { 0,
					      0,
						 32,
						 32 } ;
			ShowAni->ShowEx( 0,
							m_Point.x,
							m_Point.y,
							&rect,
							m_nWidth,
							m_nHeight ) ;
			if (!m_bImageLoad && m_nPosition !=0
				&& m_nPosition != DLG_IMPROVE
				&& m_nPosition != DLG_IDENTIFY
				&& m_nPosition != DLG_ADDAUCITEM
				&& m_nPosition != DLG_AUCTION
				&& m_btItemType == ITEM_IMAGE)
			{
				CMySize FontSize;
				CMyBitmap::GetFontSize(FontSize);
				
				g_objGameDataSet.ShowInfoBack(m_Point.x - 5 - FontSize.iWidth + 10,	m_Point.y - FontSize.iHeight - 17,	
					strlen(g_objGameDataSet.GetStr( 10530 + m_nPosition ))*FontSize.iWidth + 10,
					13 + 10) ;
				
				CMyBitmap::ShowString( m_Point.x - FontSize.iWidth + 10,
							   m_Point.y - FontSize.iHeight - 12,
							   0xffffff,
							   g_objGameDataSet.GetStr( 10530 + m_nPosition ) ) ;
			}
		}
	}
	if ( m_bImageLoad )
	{
		// show effect
		ShowItemEffect();
		switch ( m_btItemType )
		{
		case ITEM_IMAGE:
			{
				CItem *pItem = g_objHero.GetItem( m_dwImageID, false ) ;
				if ( pItem != NULL )
				{
					BOOL bScale = true ;
					if ( m_bImgZoom )
					{
						bScale = false ;
					}					
					if ( m_bMouseMove )
					{
						pItem->ShowMiniItem( m_Point.x ,
											 m_Point.y,bScale);
					}	
					else
					{
						pItem->ShowMiniItem( m_Point.x,
											 m_Point.y,bScale);
					}
				}
			}
			break ;
		case NPCITEM_IMAGE:
			{
				CItem *pItem = g_objHero.m_objPlayerDummy.GetEquipment( m_nPosition ) ;
				if ( pItem != NULL )
				{
					BOOL bScale = true ;
					if ( m_bImgZoom )
					{
						bScale = false ;
					}
					if ( m_bMouseMove )
					{
						pItem->ShowMiniItem( m_Point.x,
											 m_Point.y,bScale);
					}	
					else
					{
						pItem->ShowMiniItem( m_Point.x,
											 m_Point.y,bScale );
					}
				}
			}
			break ;
		case PETFACE_IMAGE:
			{
				CAni *pAni = g_objGameDataSet.GetPetFaceIcon(m_nImageTypeID, EXIGENCE_IMMEDIATE ) ;
				if ( pAni != NULL )
				{
					if ( m_bImgZoom )
					{
						pAni->ShowEx( 0,
							m_Point.x,
							m_Point.y,
							CRect(0,0,128,128),
							m_nWidth,m_nHeight) ;
					}
					else
					{
						pAni->ShowEx( 1,
							m_Point.x,
							m_Point.y,
							CRect(0,0,128,128),
							m_nWidth,m_nHeight) ;
					}
				}				
			}
			break;
		case SMALLPETFACE_IMAGE:
			{
				CAni *pAni = g_objGameDataSet.GetPetFaceIcon(m_nImageTypeID, EXIGENCE_IMMEDIATE ) ;
				if ( pAni != NULL )
				{
					if ( m_bImgZoom )
					{
						pAni->Show( 2,
							m_Point.x,
							m_Point.y ) ;
					}
					else
					{
						pAni->Show( 3,
							m_Point.x,
							m_Point.y ) ;
					}
				}
				CItem* pPet = g_objHero.GetItem (m_dwImageID);
				if (pPet) 
				{
					char strLev[16];
					sprintf(strLev,"%d",pPet->GetAmountLimit ());
					CMyBitmap::ShowString (m_Point.x,m_Point.y,0xffffff,strLev);
				}
			}
			break;			
		case FACE_IMAGE:
			{
				CAni *pAni = g_objGameDataSet.GetPlayerFaceIcon( m_dwImageID, m_nImageTypeID, EXIGENCE_IMMEDIATE ) ;
				if ( pAni != NULL )
				{
					if ( m_bImgZoom )
					{
						pAni->ShowEx( 0,
									m_Point.x,
									m_Point.y,
									CRect(0,0,128,128),
									m_nWidth,m_nHeight) ;
					}
					else
					{
						pAni->Show( 1,
									m_Point.x,
									m_Point.y ) ;
					}
				}
			}
			break ;
		case EMBLEM_IMAGE:
			{
				CAni *pAni = g_objGameDataSet.GetEmblemIcon( m_dwImageID, EXIGENCE_IMMEDIATE ) ;
				pAni->Show( 0,
							m_Point.x,
							m_Point.y ) ;
			}
			break ;
		case MEDAL_IMAGE:
			{
				CAni *pAni = g_objGameDataSet.GetMedal( m_dwImageID, EXIGENCE_IMMEDIATE ) ;
				if ( pAni != NULL )
				{
					if ( m_bImgZoom )
					{
						pAni->Show( 0,
									m_Point.x,
									m_Point.y ) ;
					}
					else
					{
						pAni->Show( 1,
									m_Point.x,
									m_Point.y ) ;
					}
				}
			}
			break ;
		case SKILL_IMAGE:
			{
				CAni* ShowAni = g_objGameDataSet.GetDataAni ( ( char * ) m_strAni,
															  m_strImageID, 
															  EXIGENCE_IMMEDIATE ) ;
				if ( ShowAni != NULL )
				{
					if ( !m_bImgZoom )
					{
						ShowAni->Show ( m_uFrame,
										m_Point.x,
										m_Point.y ) ;
					}
					else
					{
						RECT rect = { 0, 0, 50, 50 } ;
						ShowAni->ShowEx( m_uFrame,
									     m_Point.x,
										 m_Point.y,
										 &rect,
										 32,
										 32 ) ;
					}
					if (!m_nImageTypeID)
					{
						CMyBitmap::ShowBlock(m_Point.x,m_Point.y,m_Point.x+36,m_Point.y+36,0xac000000);
					}					
				}
			}
			break ;
		case BOOTHITEM_IMAGE:
			{
				CAni* ShowAni = g_objGameDataSet.GetDataAni ( ( char * ) m_strAni,
					m_strImageID, 
					EXIGENCE_IMMEDIATE ) ;
				
				if ( ShowAni != NULL )
				{
					if (!m_bImgZoom )
						ShowAni->Show ( m_uFrame,
						m_Point.x,
						m_Point.y ) ;
					else
						ShowAni->ShowEx ( m_uFrame,
						m_Point.x,
						m_Point.y,
						m_ShowRect,
						m_nWidth,
						m_nHeight ) ;
				}				
			}
			break;
		default:
			{
				CAni* ShowAni = g_objGameDataSet.GetDataAni ( ( char * ) m_strAni,
														  m_strImageID, 
														  EXIGENCE_IMMEDIATE ) ;

				if ( ShowAni != NULL )
				{
					if ( m_btItemType == BG_IMAGE )
						ShowAni->Show ( m_uFrame,
										m_Point.x,
										m_Point.y ) ;
					else
						ShowAni->ShowEx ( m_uFrame,
										  m_Point.x,
										  m_Point.y,
										  m_ShowRect,
										  m_nWidth,
										  m_nHeight ) ;
				}
			}
			break ;
		}
	}

	this->MouseMoveText () ;
}


void CMyImage::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// TODO: Add your code to draw the specified item
	
}

BOOL CMyImage::GetImageLoadState()
{
	return m_bImageLoad ;
}

char * CMyImage::GetImageID()
{
	return m_strImageID ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -