📄 beginpage.cpp
字号:
#include "stdafx.h"
#include "BeginPage.h"
//////////////////////////////////////////////////////////////////////////////////////
//CBeginBK
//////////////////////////////////////////////////////////////////////////////////////
CBeginBK::CBeginBK()
{
m_bActive=true;
m_nX=0;//START_X;
m_nY=0;//START_Y;
m_nPace=1;
m_nHeight=SCREEN_HEIGHT;
m_nWidth=SCREEN_WIDTH;
m_rcSource.top=0;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=0;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
}
//////////////////////////////////////////////////////////////////////////////////////
void CBeginBK::Trace()
{
return;
}
//////////////////////////////////////////////////////////////////////////////////////
//CBeginWords
//////////////////////////////////////////////////////////////////////////////////////
CBeginWords::CBeginWords()
{
m_bActive=true;
m_nX=30;//START_X;
m_nY=550;//START_Y;
m_nPace=1;
m_nHeight=SPIRIT_HEIGHT_2;
m_nWidth=SPIRIT_WIDTH*7;
m_rcSource.top=SPIRIT_HEIGHT_2*22;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=0;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
}
//////////////////////////////////////////////////////////////////////////////////////
void CBeginWords::Trace(long unsigned int luTime)
{
if(luTime%50<20)m_bActive=false;
else m_bActive=true;
return;
}
//////////////////////////////////////////////////////////////////////////////////////
//CBeginBKAni
//////////////////////////////////////////////////////////////////////////////////////
CBeginBKAni::CBeginBKAni()
{
m_bActive=true;
m_nX=SPIRIT_WIDTH*7;//START_X;
m_nY=SPIRIT_HEIGHT_2*5-1;//START_Y;
m_nPace=1;
m_nHeight=SPIRIT_HEIGHT*3;
m_nWidth=SPIRIT_WIDTH*3;
m_rcSource.top=SPIRIT_HEIGHT_2*15;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=SPIRIT_WIDTH*3;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
}
//////////////////////////////////////////////////////////////////////////////////////
void CBeginBKAni::Trace(long unsigned int luTime)
{
if(luTime%30<15)m_bActive=false;
else m_bActive=true;
return;
}
////////////////////////////////////////////////////////////////////////////////////////////////
//CGoldHandle
////////////////////////////////////////////////////////////////////////////////////////////////
CGoldHandle::CGoldHandle()
{
m_nIDSelected=-1;
m_bActive=true;
m_bAlive=true;
m_nX=SPIRIT_WIDTH*7;//START_X;
m_nY=SPIRIT_HEIGHT_2*5-1;//START_Y;
m_nOldX=SPIRIT_WIDTH*7;//START_X;
m_nOldY=SPIRIT_HEIGHT_2*5-1;//START_Y;
m_nFocusX=m_nX+SPIRIT_WIDTH_4;
m_nFocusY=m_nY+SPIRIT_HEIGHT_4;
m_nPace=1;
m_nHeight=SPIRIT_HEIGHT_4*4;
m_nWidth=SPIRIT_WIDTH_4*3;
m_rcSource.top=SPIRIT_HEIGHT*11+SPIRIT_HEIGHT_2;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=0;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
}
//////////////////////////////////////////////////////////////////////////////////////////////
void CGoldHandle::Trace(CDI* pDI,int nMode,int nOldX,int nOldY)
{
m_bMoving=false;
//if(m_bAlive)
//鼠标控制:
if(nMode==0)//模式0,主杖模式;
{
switch(pDI->m_dwMouse)
{
case DI_MOUSE_MOVE_X:m_bMoving=true;break;
case DI_MOUSE_MOVE_Y:m_bMoving=true;break;
case DI_MOUSE_LEFT_DOWN:m_bSelected=true;break;
case DI_MOUSE_LEFT_UP:m_bSelected=false;break;
}
//键盘控制:
/*
if(pDI->m_bKeyDown[DIK_LEFT])m_nX--;
if(pDI->m_bKeyDown[DIK_RIGHT])m_nX++;
if(pDI->m_bKeyDown[DIK_UP])m_nY--;
if(pDI->m_bKeyDown[DIK_DOWN])m_nY++;
*/
if(m_bMoving)
{
m_nX+=(pDI->m_MousePoint.x/3);
m_nY+=(pDI->m_MousePoint.y/3);
if(m_nX<0)m_nX=0;
if((m_nX+m_nWidth)>SCREEN_WIDTH)m_nX=SCREEN_WIDTH-m_nWidth;
if(m_nY<0)m_nY=0;
if((m_nY+m_nHeight)>SCREEN_HEIGHT)m_nY=SCREEN_HEIGHT-m_nHeight;
}
}
else//模式其他,随杖模式;
{
m_nX=m_nOldX;//-m_nX;
m_nY=m_nOldY;//-m_nY;
m_nOldX=nOldX;
m_nOldY=nOldY;
}
m_nFocusX=m_nX+SPIRIT_WIDTH_4;
m_nFocusY=m_nY+SPIRIT_HEIGHT_4;
return;
}
//////////////////////////////////////////////////////////////////////////////////////
bool CGoldHandle::SelectRole(CRolePortrait spirit)
{
if(spirit.m_nX<m_nFocusX&&m_nFocusX<(spirit.m_nX+spirit.m_nWidth)
&&spirit.m_nY<m_nFocusY&&m_nFocusY<(spirit.m_nY+spirit.m_nHeight))
{
m_nIDSelected=spirit.m_nRoleID;
return true;
}
else
{
m_nIDSelected=-1;
return false;
}
}
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
//CRolePortrait
//////////////////////////////////////////////////////////////////////////////////////
CRolePortrait::CRolePortrait(int nRoleID,int nSourceX,int nSourceY,int nWidth,int nHeight,int nX,int nY,bool bActive,bool bAlive,int nPace)
:CSpirit(nSourceX,nSourceY,nWidth,nHeight,nX,nY,bActive,bAlive,nPace)
{
m_nRoleID=nRoleID;
m_bSelected=false;
}
//////////////////////////////////////////////////////////////////////////////////////
//CBeginPage
//////////////////////////////////////////////////////////////////////////////////////
CBeginPage::CBeginPage(CDD* pdd,LPCSTR szBitmap,CDI* pdi,CDS* pds,LPCSTR szWaves[DSOUND_MAX_NUM],int nSoundNum)
:CGameStatus(pdd,szBitmap,pdi,pds,szWaves,nSoundNum)
{
m_pPortraitBingHe=new CRolePortrait(0,
SPIRIT_WIDTH_4*6,SPIRIT_HEIGHT_4*35,
SPIRIT_WIDTH_4*3,SPIRIT_HEIGHT*2,
SPIRIT_WIDTH_4*22-1,SPIRIT_HEIGHT_4*15,
true,true,
10);
for(int i=1;i<MAX_HANDLE_NUM;i++)
{
m_GoldHandle[i].m_rcSource.left=SPIRIT_WIDTH_4*3;
m_GoldHandle[i].m_rcSource.right=m_GoldHandle[i].m_rcSource.left+m_GoldHandle[i].m_nWidth-1;
/*
m_rcSource.top=SPIRIT_HEIGHT*11+SPIRIT_HEIGHT_2;
m_rcSource.bottom=m_rcSource.top+m_nHeight-1;
m_rcSource.left=0;
m_rcSource.right=m_rcSource.left+m_nWidth-1;
*/
}
}
//////////////////////////////////////////////////////////////////////////////////////
bool CBeginPage::Run()
{
//Direct input取得输入状态;
//m_pDI->UpDateInputState();
//背景音乐:
//m_pDS->Play(0);
////背景处理;
//if(m_BeginBK.m_bActive)
m_BeginBK.Trace();
//if(m_BeginBKAni.m_bActive)
m_BeginBKAni.Trace(m_luTime);
//鼠标处理:
m_GoldHandle[0].Trace(m_pDI,0);
for(int i=1;i<MAX_HANDLE_NUM;i++)
{
m_GoldHandle[i].Trace(m_pDI,i,m_GoldHandle[i-1].m_nX,m_GoldHandle[i-1].m_nY);
}
if(m_GoldHandle[0].SelectRole(*m_pPortraitBingHe))m_pPortraitBingHe->m_bActive=true;
else m_pPortraitBingHe->m_bActive=false;
//肖像处理:
//m_pPortraitBingHe->Trace(m_GoldHandle);
////字符处理:
//if(m_BeginWords.m_bActive)
m_BeginWords.Trace(m_luTime);
return true;
}
//////////////////////////////////////////////////////////////////////////////////////
void CBeginPage::Show()
{
//画背景:
if(m_BeginBK.m_bActive)
if(!m_pDD->BlitSourceToBack(m_BeginBK.m_nX,
m_BeginBK.m_nY,
m_BeginBK.m_rcSource,
DDBLTFAST_NOCOLORKEY))return;
if(m_BeginBKAni.m_bActive)
if(!m_pDD->BlitSourceToBack(m_BeginBKAni.m_nX,
m_BeginBKAni.m_nY,
m_BeginBKAni.m_rcSource,
DDBLTFAST_SRCCOLORKEY))return;
//画字符:
if(m_BeginWords.m_bActive)
if(!m_pDD->BlitSourceToBack(m_BeginWords.m_nX,
m_BeginWords.m_nY,
m_BeginWords.m_rcSource,
DDBLTFAST_SRCCOLORKEY))return;
//画Portrait:
if(m_pPortraitBingHe->m_bActive)
if(!m_pDD->BlitSourceToBack(m_pPortraitBingHe->m_nX,
m_pPortraitBingHe->m_nY,
m_pPortraitBingHe->m_rcSource,
DDBLTFAST_SRCCOLORKEY))return;
//画鼠标:
for(int i=MAX_HANDLE_NUM-1;i>=0;i--)
if(m_GoldHandle[i].m_bActive)
if(!m_pDD->BlitSourceToBack(m_GoldHandle[i].m_nX,
m_GoldHandle[i].m_nY,
m_GoldHandle[i].m_rcSource,
DDBLTFAST_SRCCOLORKEY))return;
//最后,切换图面:
m_pDD->FlipSurface();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -