📄 fightmenumanager.cpp
字号:
// FightMenuManager.cpp: implementation of the CGFightMenuManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "FightMenuManager.h"
#include "GScene.h"
#include <fstream.h>
#include "assert.h"
#include <string>
using namespace std;
#define MAXITEM_SHOWINLIST 10
#define STILL_INPRROCESS 1
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CGFightMenuManager::CGFightMenuManager()
{
m_pScene = NULL;
m_iListTop = 0;
m_iListSelect = -1;
strcpy(m_MenuItem[0].szName, "攻击");
strcpy(m_MenuItem[1].szName, "防御");
strcpy(m_MenuItem[2].szName, "道具");
strcpy(m_MenuItem[3].szName, "逃跑");
}
CGFightMenuManager::~CGFightMenuManager()
{
}
HRESULT CGFightMenuManager::InitFightMenu(CGScene *pScene)
{
assert(pScene);
m_pScene = pScene;
return m_pMenuSurface.CreateSurface(&GAFDDraw,240,18*14,GAFMEM_SYSTEMONLY);
}
HRESULT CGFightMenuManager::RenderFightMenu()
{
static RECT rt={320-120,100,320+120,18*14+100};
GAFDDraw.GetBack()->BltFastTo(&m_pMenuSurface,0,0,FALSE,&rt,TRUE);
GAFDDraw.GetBack()->AlphaConstBlt(&m_pMenuSurface,rt.left,rt.top,192,FALSE,NULL,TRUE);
GAFDDraw.GetBack()->TextXY(210,100,0xFFFF,"战斗指令");
GAFDDraw.GetBack()->TextXY(300,100,0xFFFFFF,"(请双击选择指令)");
GAFDDraw.GetBack()->TextXY(200,100+18*2,0xFF00," —————<上一页>—————");
GAFDDraw.GetBack()->TextXY(200,100+18*13,0xFF00," —————<下一页>—————");
for(int i=m_iListTop,Line=100+18*3;
i<_MENU_ITEM_COUNT&&i<m_iListTop+MAXITEM_SHOWINLIST;
i++,Line+=18)
{
LONG Color=(i==m_iListSelect)?0xFFFF:0xFFFFFF;
GAFDDraw.GetBack()->TextXY(260,Line,Color,m_MenuItem[i].szName);
}
return S_OK;
}
HRESULT CGFightMenuManager::ProcessFightMenu()
{
GAFDInput.Update(TRUE,TRUE);
if(GAFDInput.GetMouseKeyState(DIK_MOUSELEFT)==GAFDIKEY_RELEASE)
{
LONG lX,lY;
GAFDInput.GetSysMousePos(&lX,&lY);
AdjustMousePosition(&lX,&lY);
//向下翻页
if(lX>=320-80&&lX<320+80&&lY>=100+18*13&&lY<100+18*14) m_iListTop++;
if(m_iListTop+MAXITEM_SHOWINLIST>=_MENU_ITEM_COUNT)
m_iListTop=_MENU_ITEM_COUNT-MAXITEM_SHOWINLIST;
//向上翻页
if(lX>=320-80&&lX<320+80&&lY>=100+18*2&&lY<100+18*3) m_iListTop--;
if(m_iListTop<0) m_iListTop=0;
BOOL SelectFlag=FALSE;
for(int i=0,Line=100+18*3;
i<MAXITEM_SHOWINLIST&&(i+m_iListTop<_MENU_ITEM_COUNT);
i++,Line+=18)
{
if(lX>=320-80&&lX<320+80
&&lY>=Line&&lY<Line+18) //点选中某个菜单
{
SelectFlag =TRUE;
LONG IDX=i+m_iListTop;
if(IDX!=m_iListSelect) m_iListSelect=IDX;
}
}
if(!SelectFlag) m_iListSelect=-1;
}
return STILL_INPRROCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -