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

📄 message.h

📁 圣剑英雄传源码适合初学C语言者如细心阅读完定有收获!
💻 H
字号:
//********************************************
//	消息处理 相关函数
//  创建于2000年5月8日
//********************************************

#ifndef _MESSAGE_H_
#define _MESSAGE_H_

#define MAX_MSG	1024		//最大消息数

//消息定义
enum MESSAGE{
		MSG_NULL=0,			//空消息
		MSG_BREAKSCRIPT,	//暂时挂起脚本

		MSG_SETVARIABLE,	//设置脚本变量的值
		MSG_SETPLAYSTATE,	//设置运行状态
		MSG_SETDISPLAYSTATE,//设置显示模式
		MSG_BACKTOTITLE,	//回游戏主菜单
		MSG_TEXTTITLE,		//显示字幕 (s1=filename, s2=index)
		MSG_FIGHT,			//战斗 (s1/s2/s3=敌人 p1/p2/p3=我方)
		MSG_ENABLEFIGHT,	//是否踩地雷 (p1=ture/false)
		MSG_BOSSFIGHT,		//是否是boss战(p1=ture/false)

		MSG_LOADMAP,		//读入地图
		MSG_SAVEMAP,		//存储地图
		MSG_ADDMAPHOOK,		//添加地图陷阱 (p1=x, p2=y, s1=sptfile)
		MSG_SETMAPHOOK,		//设置地图陷阱 (p1=x, p2=y, p3=Hook)
		MSG_SETMAPCELL,		//设置地图某格 (p1=Level, p2=x, p3=y, s1=num s2=page)
		MSG_SETMAPBLOCK,	//设置地图阻挡 (p1=x, p2=y, p2=block)
		MSG_SETMAPLEVEL,	//设置地图层次 (p1=x, p2=y, p3=level1, s1=level2)
		MSG_CENTERMAP,		//设置地图中心点( p1=x, p2=y )
		MSG_SCROLLMAPTO,	//卷动地图到某点( p1=x, p2=y )

		MSG_LOADNPC,		//读取地图的NPC

		MSG_TALK,			//对话			(s1=对话标志)
		MSG_SAY,			//说话			(s1=一句话的内容)
		MSG_TALKDIR,		//调整主角和NPC的方向使其面对 (p1=NpcId,p2=Npc原来的活动属性,
							//								s1=对话脚本)

		MSG_MOVE,			//行走			(p1=x, p2=y)
		MSG_SETDIR,			//设置人物方向	(p1=方向)
		MSG_SETPOSITION,	//设置人物位置	(p1=x, p2=y)
		MSG_CENTERPLAYER,	//以主角为地图中心
		MSG_SETPLAYERSHOW,	//设置主角显示与否 (p1=bShow)
		MSG_LOADPLAYER,		//从ini文件读入主角(p1=rolenum s1=filename s2=index)
		MSG_SWITCHPLAYER,	//交换主角位置
		MSG_SETPLAYERNUM,	//设置主角个数

		MSG_ADDMONEY,		//改变金钱		(p1=money)
		MSG_ADDOBJECT,		//加入物体		(s1=物体名 p1=num)
		MSG_DELOBJECT,		//删除物体		(s1=物体名 p1=num)
		MSG_ADDMAGIC,		//加入魔法		(s1=魔法名)
		MSG_DELMAGIC,		//删除魔法      (s1=魔法名)

		MSG_MOVENPCTO,		//NPC移动到		(s1=Npc名字, p1=x, p2=y)
		MSG_MOVENPC,		//NPC移动		(s1=Npc名字, p1=x, p2=y)
		MSG_SETNPCPOS,		//设置NPC位置	(p1=x, p2=y)
		MSG_SETNPCDIR,		//设置NPC方向	(p1=方向);
		MSG_SETNPCSTEP,		//设置NPC步伐	(p1=步伐);
		MSG_ADDNPC,			//加入NPC		(s1=filename p1=id, p2=x, p3=y)
		MSG_DELNPC,			//删除NPC		(s1=Npc名字)
		MSG_SETNPCACTIVE,	//设置NPC活动与否	(s1=Npc名字, p1=bActive)
		MSG_SETNPCSHOW,		//设置NPC显示与否	(s1=Npc名字, p1=bShow)
		MSG_SETNPCSCRIPT,	//设置NPC脚本		(s1=Npc名字, s2=脚本文件)

		MSG_DELAY,			//延时			(p1=time)
		MSG_FADEIN,			//淡入			(p1=style, p2=color)
		MSG_FADEOUT,		//淡出			(p1=style)
		MSG_PLAYMUSIC,		//播放音乐		(s1=File)
		MSG_STOPMUSIC,		//停止播放
		MSG_PAUSEMUSIC,		//暂停音乐
		MSG_RESUMEMUSIC,	//恢复音乐
		MSG_PLAYSOUND,		//播放音效		(s1=File)
		MSG_STOPSOUND,		//停止勃发
		MSG_GAMEMESSAGE,	//显示一条游戏消息	(s1=消息)
		MSG_SHOWMESSAGE,	//显示一条消息	(s1=消息)
		MSG_BREAK,			//本次不执行
		MSG_SETCPTYPE,		//设置陷阱类型
		MSG_MOVEDIRECTTO,	//向某个方向移动一个距离
};

//消息处理类
class CMessage
{
	//消息传递数据
	typedef struct{
		enum MESSAGE msg;					//消息类型
		int Param1, Param2, Param3;			//参数
		char *String1, *String2, *String3, *String4;	//字符指针参数
	}stMessage;

	bool m_bMessageRunning;					//是否有消息正在执行
	int m_nStartId, m_nEndId;				//队列开头和结束指针
	stMessage m_stMsg[MAX_MSG];				//消息队列

public:
	CMessage();								//初始化
	void ClearAllMessage();					//清除全部消息
	bool IsEmpty();							//消息队列是否为空
	void DeleteMessage(int Id=-1);			//删除一条消息
	void PutMessage(stMessage);				//加入一条消息
	void PutMessage(enum MESSAGE, int p1=0, int p2=0 ,int p3=0, char *str1=NULL, char *str2=NULL, char *str3=NULL);//加入一条消息
	enum MESSAGE GetMessage(int Id=-1);		//获取一条消息(缺省=当前消息)
	bool RunMessage(int Id=-1);				//执行一条消息(缺省=当前消息)
	bool BackMessage();						//消息结束处理
	void Run();								//执行(可能是一条消息,也可能是多条消息)
};

#endif

⌨️ 快捷键说明

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