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

📄 define.h

📁 看到有兄弟提出的半透明算法
💻 H
字号:
// SRDHDefine.h

#include "AEEModGen.h"          // Module interface definitions
#include "AEEAppGen.h"          // Applet interface definitions
#include "AEEShell.h"           // Shell interface definitions
#include "AEEFile.h"			// File interface definitions
#include "AEESound.h"			// Sound Interface definitions
#include "AEEHeap.h"
#include "AEEBitmap.h"
#include "AEESprite.h"
#include "AEEGraphics.h"
#include "AEEHtmlViewer.h"

#include "../eidolon.bid"

#include "../eidolon_res.h"

// 绘图对齐方式
enum DFUN_DRAW_ALIGN
{
    EDD_ALIGN_NONE          = 0x00000000,

	// 水平对齐 --  (mutually exclusive within this group) 
	EDD_ALIGN_LEFT          = 0x00000010,
	EDD_ALIGN_CENTER        = 0x00000020,
	EDD_ALIGN_RIGHT         = 0x00000040,
	EDD_ALIGN_FILL          = 0x00000080,
	EDD_ALIGNHORZ_MASK      = 0x000000F0,     // 水平对齐掩码
    
	// 垂直对齐 -- (mutually exclusive within this group) 
	EDD_ALIGN_TOP           = 0x00000100,
	EDD_ALIGN_MIDDLE        = 0x00000200,
	EDD_ALIGN_BOTTOM        = 0x00000400,
	EDD_ALIGN_SPREAD        = 0x00000800,
	EDD_ALIGNVERT_MASK      = 0x00000F00,    // 垂直对齐掩码
	
	EDD_ALIGN_MASK          = (EDD_ALIGNHORZ_MASK|EDD_ALIGNVERT_MASK)
};

/*************************************** 宏定义 ************************************/

// 开始检验
#define BEGIN_CHECK \
    boolean bCHECK_HAS_ERROR = false; \
do
// 检验错误捕捉
#define CATCH_CHECK \
    while(0); \
MyEndCheck: \
if (bCHECK_HAS_ERROR)
// 结束检验
#define END_CHECK
// 进行错误处理
#define PROCESS_ERROR   \
    do{ \
	DBGPRINTF("My Error ------------ "); \
	bCHECK_HAS_ERROR = true; goto MyEndCheck; \
    }while(0)

// 将表达式的值赋给p,并检验p是否为空
#define CHECK_NULL(p, exp)  do{ p = exp; if (p == NULL) PROCESS_ERROR; }while(0)
// 检查是否不成功
#define CHECK_NOT_SUCCESS(exp, success_code)    if (exp != success_code) PROCESS_ERROR
// 检验expression是否不等于SUCCESS
#define CHECK_ERROR(exp) CHECK_NOT_SUCCESS(exp, SUCCESS)
// 检验是否是假
#define CHECK_FALSE(exp) if (!exp) PROCESS_ERROR

// 使用制定方法清空指针,并将指针置空
#define _RELEASE(p, method) \
    if (p) \
    { \
	method; \
	p = NULL; \
    }
// 清空接口指针
#define IRELEASE(p, type)   _RELEASE(p, I##type##_Release(p))
// 清空自定义类型,带有Release()方法的指针
#define CUSTOM_RELEASE(p)   _RELEASE(p, p->Release())

/***********************************************************************************/

// 视图定义
#define ID_VIEW_START			1	// 起始
#define ID_VIEW_MENU			2	// 主菜单
#define ID_VIEW_GAME			3	// 游戏
#define ID_VIEW_HELP			4	// 帮助
#define ID_VIEW_SET				5	// 设置
#define ID_VIEW_ABOUT			6	// 关于
#define	ID_VIEW_STOP			7	// 结束

#define TIME_VIEW				50	// 视图定时器时间间隔
#define TIME_GAME				50//20	// 游戏定时器时间间隔

#define MENU_TEXT_NUM			5	// 菜单数目

#define BACKGROUND_WIDTH		176 // 背景宽
#define BACKGROUND_HEIGTH		205 // 背景高

#define AVLID_KEY_PRESS_NUM		0	// 无效按键次数

#define MAP_COW_INDEX			12	// 定义地图多少行
#define MAP_COL_INDEX			45	// 定义地图多少列

#define SIGLE_MAP_WIDTH			20	// 单张位图的宽
#define SIGLE_MAP_HEIGHT		20	// 单张位图的高

#define SPELLPLAYERBMP_WIDTH	65	// 用于玩家拼图的缓冲区宽
#define SPELLPLAYERBMP_HEIGHT	65	// 用于玩家拼图的缓冲区高

#define WORLD_ACCELERATION		3	// 定义世界加速度
#define INIT_PACE				15//18	// 定义人物跳跃起始速度

#define PLAYER_MOVEX			4	// 玩家横向移动步伐大小(也做为地图移动的速度)
#define PLAYER_MOVEY			3	// 玩家纵向移动步伐大小

#define INIT_POSX				60	// 人物固定横坐标
#define INIT_POSY				120	// 人物固定纵坐标

#define SOUND_CFG_FILE			"gamecfg/SoundCfg.dat"// 声音配置文件
#define GAME_SENCE_FILE			"gamecfg/GameSence.dat"// 游戏场景配置文件
#define GAMEBG_FILE				"ground/ground_0%d.gro"// 游戏背景配置文件

// 各位图索引
// 起始视图
#define			LOGO1_INDEX			0	// 移动标志BMP位图索引
#define			LOGO2_INDEX			1	// 百宝箱BMP位图索引

// 菜单视图
#define			MAINMENUBG_INDEX	0	// 菜单背景索引
#define			MENUSELECT_INDEX	1	// 菜单选择索引
#define			MENUTEXT_INDEX		2	// 菜单文字索引
#define			TITLE_INDEX			3	// 标题索引


// 关于视图
#define			ABOUTTEXT_INDEX		2	// 关于视图文字索引
#define			TITLE1_INDEX		3	// 标题索引

// 帮助视图背景使用 MAINMENUBG_INDEX
#define			HELPTEXT_INDEX		2	// 帮助视图文字索引

/*---------------------------    游戏视图     ----------------------*/
// 游戏(左右软键文字索引使用 TEXT1_INDEX)
#define			BOTTOMBG_INDEX		0	// 底层背景索引
#define			PLAYER_INDEX		1

/*------------------------------------------------------------------*/

// 结束视图
#define			OVER_INDEX			0	// 结束视图画面索引

// 按键
enum EKEYCODE
{
	EKEY_UP			=	0,	// 上方向键
	EKEY_DOWN		=	1,	// 下方向键
	EKEY_LEFT		=	2,	// 左方向键
	EKEY_RIGHT		=	3,	// 右方向键
	EKEY_SELECT		=	4,	// 确定,5键

	// 数字
	EKEY_KEY1		=	5,	// 1
	EKEY_KEY2		=	6,	// 2
	EKEY_KEY3		=	7,	// 3
	EKEY_KEY4		=	8,	// 4
	EKEY_KEY5		=	9,	// 5
	EKEY_KEY6		=	10,	// 6
	EKEY_KEY7		=	11,	// 7
	EKEY_KEY8		=	12,	// 8
	EKEY_KEY9		=	13,	// 6

	EKEY_CLR		=	14	// CLR
};

// 主菜单
enum MAINMENU
{
	EMENU_START		= 1,	// 开始
	EMENU_CONTINUE,			// 继续
	EMENU_HELP,				// 帮助
	EMENU_ABOUT,			// 关于
	EMENU_STOP				// 结束
};

//配置视图选项
enum SETVIEWMENU
{
	VIBRATE_OPT		= 0,	// 震动
	SOUND_OPT				// 声音
};

// 游戏视图菜单
enum GAMEMENU
{
	CONTINUE_GAME	= 0,	// 继续游戏
	GANE_HELP,				// 游戏帮助
	RETURN_MENU,			// 返回主菜单
	EXIT_GAME				// 退出游戏
};

// 声音配置文件
typedef struct _SSoundCfg
{
	boolean bOpenSound;
}SOUNDCFG;

// 游戏场景配置文件
typedef struct _SGameSence
{
	int8 nCurGameSence;
}GAMESENCE;

// 地图图片元素数据
typedef struct _SMapElement
{
	int16 nPosX;// 图片X位置
	int16 nPosY;// 图片Y位置
	int8 nWidth;// 图片高
	int8 nHeight;// 图片宽
	boolean bBlock;// 是否阻碍
}MAPELEMENT;

// 资源图片大小数据,适用人物、敌人、BOSS等
typedef struct _SBmpData
{
	int16 nResPosX;// 资源起始X位置
	int16 nResPosY;// 资源起始Y位置
	int8 nResWidth;// 资源图片高
	int8 nResHeight;// 资源图片宽
}RBMPDATA;

// 此数据适用范围
// 1:人物动作图片大小数据,适用人物、敌人、BOSS等
// 2:定义影子,与人物动作图片对应
// 3:定义武器,与人物当前图片相适应
typedef struct _SCompositiveBmp
{
	int8 nResIndex;// 对应的资源图片索引(PLAYERBMPDATA)
	int8 nSeekPosX;// 此动作画图时便宜的X位置
	int8 nSeekPosY;// 此动作画图时便宜的Y位置
	boolean bTransform;// 是否翻转
}COMPOSITIVEBMP;

typedef struct _SCharacterIndex
{
	int8 nLeftIndex;
	int8 nRightIndex;
}CHARACTERINDEX;

typedef struct _SShadow
{
	int16 nRelativeX;
	int16 nRelativeY;
	int16 nPosX;
	int16 nPosY;
	int8 nIndex;
}SHADOW;

// 人物行动时的坐标补足
typedef struct _SActionBalance
{
	int8 nBalanceFun;// 补足方式,0:加,1:减
	int8 nBalanceX;// X向补足差额
}ACTIONBALANCE;

// 关卡切换
typedef struct _SCHANGESTAGE
{
	int16 nStartMapX;// 可以改变关卡的横坐标起点
	int16 nEndMapX;// 可以改变关卡的横坐标终点
	int16 nMapY;// 可以改变关卡的纵坐标
	int8 nChangeWorld;// 大关卡变化
	int8 nChangeStage;// 小关卡变化
}ChangeStage;

// 用于在关卡开始时当前地图位置和人物位置
typedef struct _SINITSTAGEDATA
{
	int16 nMapX;// 地图X位置
	int16 nMapY;// 地图Y位置
	int16 nRelativePosX;// 人物相对地图X位置
	int16 nRelativePosY;// 人物相对地图Y位置
	int16 nPosX;// 人物在屏幕的X位置
	int16 nPosY;// 人物在屏幕的Y位置
	int8 nCurFaceX;// 人物当前朝向
}InitStageData;

⌨️ 快捷键说明

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