📄 smallmap.cpp
字号:
#include "SmallMap.h"
CSmallMap::CSmallMap(LPDIRECT3DDEVICE9 pd3dDevice)
{
m_pd3dDevice=pd3dDevice;
m_FrameWidth=136;
m_pSmallMapBG=NULL;
m_pMask=NULL;
m_pZhizhen=NULL;
}
CSmallMap::~CSmallMap()
{
SAFE_DELETE(m_pSmallMapBG);
SAFE_DELETE(m_pMask);
SAFE_DELETE(m_pZhizhen);
}
void CSmallMap::Inint()
{
m_pSmallMapBG=new CD3DSprite(m_pd3dDevice);
m_pSmallMapBG->Inint(".\\UIimage\\background.tga");
m_pSmallMapBG->SetDrawPos(600,36,0);
m_pMask = new CD3DSprite(m_pd3dDevice);
m_pMask->Inint(".\\UIimage\\MinimapMask.tga");
m_pMask->SetSprite(0,0,136,136);
m_pMask->SetDrawPos(865,42,0);
m_pZhizhen=new CD3DSprite(m_pd3dDevice);
m_pZhizhen->Inint(".\\UIimage\\MinimapArrow.tga");
m_pZhizhen->SetSprite(0,0,32,32);
m_pZhizhen->SetDrawPos(932,107,0);
m_pZhizhen->SetCenterPoint(16,16);
}
void CSmallMap::DoFrame()
{
}
void CSmallMap::Render(D3DXVECTOR3 m_vpos,float angle)
{
D3DLOCKED_RECT LockedRectMask, LockedRectBG;
RECT SmallMapRect;
D3DXVECTOR3 tempPoint;
tempPoint=m_vpos;
m_ClipX=tempPoint.x*800/3000+265+m_FrameWidth/2;
m_ClipY=-tempPoint.z*533/3000+132+m_FrameWidth/2;
if (m_ClipY<10)
{
m_ClipY=10;
}
if (m_ClipY>384)
{
m_ClipY=384;
}
m_pSmallMapBG->SetSprite(m_ClipX, m_ClipY, m_FrameWidth,m_FrameWidth-2);
SmallMapRect=m_pSmallMapBG->GetRect();
m_pSmallMapBG->GetTexture()->LockRect(0,&LockedRectBG,&SmallMapRect,D3DLOCK_DISCARD);
m_pMask->GetTexture()->LockRect(0,&LockedRectMask,NULL,D3DLOCK_DISCARD);
D3DSURFACE_DESC MaskDESC, BGDESC;
m_pMask->GetTexture()->GetLevelDesc(0,&MaskDESC);
m_pSmallMapBG->GetTexture()->GetLevelDesc(0,&BGDESC);
DWORD *pMaskColor, *pBGColor;
pMaskColor = (DWORD*)LockedRectMask.pBits;
pBGColor = (DWORD*)LockedRectBG.pBits;
DWORD MaskColor, BGColor;
unsigned char MaskColorA,BGColorA;
for(int i=0;i<(int)MaskDESC.Height;i++)
{
for (int j=0;j<(int)MaskDESC.Width;j++)
{
int index1=i*MaskDESC.Width+j;
int index2=i*BGDESC.Width+j;
MaskColor=pMaskColor[index1];
BGColor =pBGColor[index2];
MaskColorA=(unsigned char)(MaskColor>> 24&0xff);
BGColorA = (unsigned char)(BGColor >> 24&0xff);
if (MaskColorA==BGColorA)
{
pMaskColor[index1]=pBGColor[index2];
}
}
}
m_pSmallMapBG->GetTexture()->UnlockRect(0);
m_pMask->GetTexture()->UnlockRect(0);
m_pZhizhen->SetAngle(angle);
m_pMask->Render(false);
m_pZhizhen->Render(true);
}
void CSmallMap::Clean()
{
}
bool CSmallMap::DoFrameMouse(POINT point)
{
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -