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

📄 fightmenumanager.cpp

📁 RPG游戏源代码,里面有RPG游戏的制作流程,供大家学习如何制作RPG游戏
💻 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 + -