common.h

来自「MDEngine2plus游戏开发库! 用来开发游戏超级简单!」· C头文件 代码 · 共 334 行

H
334
字号
#ifndef MD_COMMON_H
#define MD_COMMON_H


#define SAFE_DELETE(A)	if( (A) != NULL ) { delete [] (A); (A) = NULL; }
#define SAFE_RELEASE(A)	if( (A) != NULL ) { (A) -> Release(); (A) = NULL; }

const DWORD	JSPKFileFlag	= 0x4B50534A;

#define FILE_PROVIDER_MASK		0x4650454C		// FileProvider
#define PROFILE_PROVIDER_MASK	0x5046454C		// ProfileProvider
#define CODEC_PROVIDER_MASK		0x45444650		// EDL Provider
#define IMAGE_PROVIDER_MASK		0x494D454C		// ImageProvider
#define SOUND_PROVIDER_MASK		0x53445056		// SoundProvider

#define MAX_PWD			255
#define PF_VALUEMAXLEN	512

////////////////////////////////////////////////////////////
//
//          MDEngine - Engine/Surface Module
//
////////////////////////////////////////////////////////////
#define RGBMODE_555		(16<<2)+1	// 16位 555 模式
#define RGBMODE_565		(16<<2)+2	// 16位 565 模式
#define RGBMODE_16      16<<2		// 16位 未知 模式
#define RGBMODE_24		24<<2		// 24位模式
#define RGBMODE_32		32<<2		// 32位模式
#define RGBMODE_NONE	8 <<2		// 8 位调色板模式
#define RGBMODE_AUTO	6			// 使用主图面像素格式

#define SUR_PRIMARY		1
#define SUR_BACK		2
#define SUR_WORK		4

#define COLORKEY_NO		0xFFFFFFFF

struct SurfaceInfo
{
	int		Width;			//图面宽
	int		Height;			//图面高
	BYTE	*GraphBuffer;	//图面缓冲区指针
	DWORD	GraphPitch;		//图面缓冲区跨度
};

////////////////////////////////////////////////////////////
//
//          MDEngine - Text Module
//
////////////////////////////////////////////////////////////
#define FONT_BOLD			1
#define FONT_ITALIC			2
#define FONT_UNDERLINE		4
#define FONT_StrikeOut		8
#define FONT_TRANSPARENT	0xFFFFFFFF

////////////////////////////////////////////////////////////
//
//          MDEngine - Input Module
//
////////////////////////////////////////////////////////////
#define INPUT_NONE		0
#define	INPUT_KEYBOARD	1
#define INPUT_MOUSE		2
#define INPUT_JOYSTICK	4

#define KEY_NONE		0	// 没有按键被按下

#define KD_ALWAYS		0
#define KD_DOWN			1
#define KD_UP			2

#define DIM_OFFSET		300
#define DIM_X			20+DIM_OFFSET
#define DIM_Y			21+DIM_OFFSET
#define DIM_Z			22+DIM_OFFSET
#define DIM_BUTTON0		0 +DIM_OFFSET
#define DIM_BUTTON1		1 +DIM_OFFSET
#define DIM_BUTTON2		2 +DIM_OFFSET
#define DIM_BUTTON3		3 +DIM_OFFSET
#define DIM_BUTTON4		4 +DIM_OFFSET
#define DIM_BUTTON5		5 +DIM_OFFSET
#define DIM_BUTTON6		6 +DIM_OFFSET
#define DIM_BUTTON7		7 +DIM_OFFSET
#define DIM_BUTTON(X)	((X)+DIM_OFFSET)

#define DIJ_OFFSET		400
#define DIJ_X			60 + DIJ_OFFSET
#define DIJ_Y			62 + DIJ_OFFSET
#define DIJ_Z			64 + DIJ_OFFSET
#define DIJ_RTX			66 + DIJ_OFFSET
#define DIJ_RTY			68 + DIJ_OFFSET
#define DIJ_RTZ			70 + DIJ_OFFSET
#define DIJ_SLIDER0		72 + DIJ_OFFSET
#define DIJ_SLIDER1		74 + DIJ_OFFSET
#define DIJ_LX			60 + DIJ_OFFSET
#define DIJ_RX			61 + DIJ_OFFSET
#define DIJ_LY			62 + DIJ_OFFSET
#define DIJ_RY			63 + DIJ_OFFSET
#define DIJ_LZ			64 + DIJ_OFFSET
#define DIJ_RZ			65 + DIJ_OFFSET
#define DIJ_BUTTON(X)	((X)+DIJ_OFFSET)

#define DIK_ENTER		DIK_RETURN


////////////////////////////////////////////////////////////
//
//          MDEngine - Audio Module
//
////////////////////////////////////////////////////////////
#define	VOL_MAX		1.0		// 最大音量	(默认)
#define	VOL_MIN		0.0		// 最小音量
#define	PAN_LEFT	-1.0	// 左声道音量最大,右声道静音
#define	PAN_RIGHT	1.0		// 右声道音量最大,左声道静音
#define PAN_CENTER	0.0		// 左右声道平均 (默认)

////////////////////////////////////////////////////////////
//
//          MDEngine - CPU Module
//
////////////////////////////////////////////////////////////
typedef struct CPUExtensions
{
	bool FPU_FloatingPointUnit;
	bool VME_Virtual8086ModeEnhancements;
	bool DE_DebuggingExtensions;
	bool PSE_PageSizeExtensions;
	bool TSC_TimeStampCounter;
	bool MSR_ModelSpecificRegisters;
	bool PAE_PhysicalAddressExtension;
	bool MCE_MachineCheckException;
	bool CX8_COMPXCHG8B_Instruction;
	bool APIC_AdvancedProgrammableInterruptController;
	unsigned int APIC_ID;
	bool SEP_FastSystemCall;
	bool MTRR_MemoryTypeRangeRegisters;
	bool PGE_PTE_GlobalFlag;
	bool MCA_MachineCheckArchitecture;
	bool CMOV_ConditionalMoveAndCompareInstructions;
	bool FGPAT_PageAttributeTable;
	bool PSE36_36bitPageSizeExtension;
	bool PN_ProcessorSerialNumber;
	bool CLFSH_CFLUSH_Instruction;
	unsigned int CLFLUSH_InstructionCacheLineSize;
	bool DS_DebugStore;
	bool ACPI_ThermalMonitorAndClockControl;
	bool EMMX_MultimediaExtensions;
	bool MMX_MultimediaExtensions;
	bool FXSR_FastStreamingSIMD_ExtensionsSaveRestore;
	bool SSE_StreamingSIMD_Extensions;
	bool SSE2_StreamingSIMD2_Extensions;
	bool SS_SelfSnoop;
	bool HT_HyperThreading;
	unsigned int HT_HyterThreadingSiblings;
	bool TM_ThermalMonitor;
	bool IA64_Intel64BitArchitecture;
	bool _3DNOW_InstructionExtensions;
	bool _E3DNOW_InstructionExtensions;
	bool AA64_AMD64BitArchitecture;
} CPUExtensions;

typedef struct CPUCache
{
	bool bPresent;
	char strSize[32];
	unsigned int uiAssociativeWays;
	unsigned int uiLineSize;
	bool bSectored;
	char strCache[128];
} CPUCache;

typedef struct CPUL1Cache
{
    CPUCache Instruction;
	CPUCache Data;
} CPUL1Cache;

typedef struct CPUTLB
{
	bool bPresent;
	char strPageSize[32];
	unsigned int uiAssociativeWays;
	unsigned int uiEntries;
	char strTLB[128];
} CPUTLB;

typedef struct CPUInfo
{
	char strVendor[16];
	unsigned int uiFamily;
	unsigned int uiExtendedFamily;
	char strFamily[64];
	unsigned int uiModel;
	unsigned int uiExtendedModel;
	char strModel[128];
	unsigned int uiStepping;
	unsigned int uiType;
	char strType[64];
	unsigned int uiBrandID;
	char strBrandID[64];
	char strProcessorSerial[64];
	unsigned long MaxSupportedLevel;
	unsigned long MaxSupportedExtendedLevel;
	CPUExtensions _Ext;
	CPUL1Cache _L1;
	CPUCache _L2;
	CPUCache _L3;
	CPUCache _Trace;
	CPUTLB _Instruction;
	CPUTLB _Data;
} CPUInfo;



enum ENCODE_TYPE{ENC_NONE,ENC_RLE,ENC_LZW};

enum FILE_ERR_CODE{
	FERR_NONE,
	FERR_OPENFAILED,
	FERR_GETSIZEFAILED,
	FERR_MEMLOW,
	FERR_READFAILED,
	FERR_SEEKFAILED,
	FERR_SAVEFAILED,
	FERR_INVALIDPRO,
	FERR_INVALIDPAK,
	FERR_SAVEBUFFAILED,
	FERR_NODECODER,
	FERR_DECODEFAILED
};
const char FILE_ERR_MSG[][60]=
{
	"\0",
	"无法打开文件:%s\n该文件可能不存在",
	"获取文件 %s 大小失败!",
	"内存不足!\n无法为文件 %s分配足够的空间",
	"读取文件 %s 失败!",
	"文件指针移动失败!",
	"数据写入文件 %s 失败!",
	"无效的FileProviderDLL",
	"密码错误或者无效的数据包文件 %s,或没有与之相关联的服务组件",
	"缓冲区数据保存失败!您的磁盘空间可能不足",
	"无法找到合适的解码组件!请向文件提供者索取需要的解码组件",
	"数据解码失败!无法还原数据"
};
enum PROFILE_ERR_CODE{
	PFERR_NONE,
	PFERR_OPENFAILED,
	PFERR_GETSIZE,
	PFERR_READFAILED,
	PFERR_SAVEFAILED
};
const char PROFILE_ERR_MSG[][60]=
{
	"\0",
	"无法打开、创建ini配置文件:%s",
	"无法获取该ini配置文件%s的长度信息!",
	"读取ini配置文件%s失败!",
	"保存ini配置文件%s失败!您的磁盘空间可能不足"
};

enum ENGINE_ERR_CODE{
	EN_NOERR,
	DD_CREATE,
	DD_CORP,
	DD_DISPMODE,
	DD_PRIM,
	DD_BACK,
	DD_WORK,
	DD_CLIP
};
const char EngineErrMsg[][30]=
{
	" ",
	"DirectDraw7 创建失败!",
	"DirectDraw7 协作模式设置失败!",
	"DirectDraw7 显示模式设置失败!",
	"DirectDraw7 主表面创建失败!",
	"DirectDraw7 缓冲区创建失败!",
	"DirectDraw7 工作缓冲创建失败!",
	"DirectDraw7 剪裁器创建失败!"
};


enum INPUT_ERR_CODE{
	INPUT_NOERR,
	INPUT_CREATE,
	INPUT_CREATEMOUSE,
	INPUT_SETMOUSE,
	INPUT_MOUSECORP,
	INPUT_CREATEKEYBOARD,
	INPUT_SETKEYBOARD,
	INPUT_KEYBOARDCORP,
	INPUT_SETJOYS,
	INPUT_JOYSCORP
};
const char InputErrMsg[][30]=
{
	" ",
	"DirectInput设备创建失败!",
	"鼠标设备创建失败!",
	"设置鼠标数据格式失败!",
	"鼠标协作模式设置失败!",
	"键盘设备创建失败!",
	"设置键盘数据格式失败!",
	"键盘协作模式设置失败!",
	"设置游戏手柄数据格式失败!",
	"游戏手柄协作模式设置失败!"
};

#define SOUND_STATIC	2	// 00000010	 - 11111101 (0xFD)
#define SOUND_STREAM	4	// 00000100  - 
#define SOUND_3D		8	// 00001000  -
#define SOUND_LOOP		1	// 00000001  -

#define SOUNDSTAT_LOOP	1
#define SOUNDSTAT_PLAY	2
#define SOUNDSTAT_STOPSTREAM 128	// 10000000

enum SOUND_ERR_CODE{
	SOUND_NOERROR,
	SINVALID_PARAM,
	SFILE_NOTFOUND,
};
const char SOUND_ERR_MSG[][60]=
{
	"\0",
	"传递的参数无效",
	"打开文件失败,文件可能不存在",
};

#endif

⌨️ 快捷键说明

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